Перейти к основному содержимому

PageBuilder

Данный набор классов отвечает за добавление одной страницы сайта в сборку.

IPageBuilder

Так как требуются различные сборщики под обычный и мультиязычный сайты, то создан общий интерфейс, определяющий два метода:

  • build(): void - сборка страницы, по итогам которой должен быть создан файл страницы в сборке и скачаны все assets файлы
  • get_additional_entities(): StaticBuildEntity[] - одна страница может ссылаться на другую или содержать в себе открытие модального окна / панели, эти сущности так же должны попасть в сборку. Данный метод должен вернуть все сущности (страницы), которые нужно дополнительно скачать в сборку

PageBuilderSimple

Класс для добавления страницы сайта без мультиязычности в сборку:

Build: Метод подготавливает и добавляет страницу в сборку:

  • Если страница уже есть в сборке то выбрасывает исключение PageSkippedException
  • С помощью метода get_links собираются все ссылки на странице, если ссылка ведет на файл, то он должен быть скачан в сборку, если ссылка ведет на другую страницу сайта, то она будет скачана. Получение ссылок происходит с помощью классов Links
  • Все ссылки обрабатываются в цикле. Путь на сайте преобразуются в пути в сборке, все лишние или некорректные ссылки отбрасываются. Если ссылка ведет на файл, который нужно скачать в сборку, то он скачивается с помощью классов Copiers
  • Преобразуются ссылки на элементор файлы, чтобы относительные пути в сборке работали правильно
  • Все ссылки на странице заменяются на относительные ссылки в сборке
  • В конец html файла страницы добавляются требуемые скрипты и стили

Get_additional_entities: Возвращает сущности на которые ссылается страница. Работает на основе методов под различные случаи:

  • get_cpt_modals - Во всех тегах script ищет использование модальных окон с помощью courseController.modal.open
  • get_jspanel_modals - Во всех тегах script ищет использование панелей с помощью courseController.jsPanel.open
  • get_shortcodes_entities - С помощью шорткодов из плагина Elearning на страницу может добавляться открытие всех сущностей с помощью методов оболочки courseController.*.open. Все сущности, с которыми происходит взаимодействие, скачиваются в сборку. Тип сущности определяется по её id

PageBuilderMultilang

Класс для добавления страницы сайта с включенной мультиязычностью в сборку на всех требуемых языках:

Build:

  • В цикле включаются по очереди все требуемые языки для страницы
  • Под текущий язык создается экземпляр класса PageBuilderSimple и вызывается его метод build

Get_additional_entities: Возвращает свойство $additional_entities, в котором содержаться все дополнительные сущности. Список сущностей собирается во время вызова метода build